const { defineConfig } = require('@vue/cli-service')

// 使用环境变量（兼容无环境文件情况
const grafanaUrl = process.env.VUE_APP_GRAFANA_BASE_URL || 'http://192.168.31.57:3000'

module.exports = defineConfig({
  transpileDependencies: true
})
module.exports = {
  devServer: {
    // headers: {
    //   // 允许特定域名嵌入iframe
    //   "Content-Security-Policy": `frame-src 'self' ${grafanaUrl};`
    // }
    proxy: {
      '/grafana': {
        target: 'http://192.168.31.57:3000',
        changeOrigin: true,
        pathRewrite: {'^/grafana': ''},
        onProxyRes: (proxyRes) => {
          delete proxyRes.headers['x-frame-options'];
        }
      },
      '/kpi': {
        target: 'http://192.168.31.169:5000',
        changeOrigin: true,
        pathRewrite: {
          '^/kpi': '/kpi'
        }
      }
    },
    client: {
      overlay: false
    }
  },
  // 其他配置
  // configureWebpack: {
  //   plugins: [
  //     new webpack.DefinePlugin({
  //       __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: JSON.stringify(false)
  //     })
  //   ]
  // },
  // 生产环境配置
  chainWebpack: config => {
    config.plugin('html').tap(args => {
      // 正确获取现有的meta配置
      const existingMeta = args[0].meta || {};
      // 正确合并meta配置
      args[0].meta = {
        ...existingMeta, // 展开现有meta配置
        "http-equiv": "Content-Security-Policy",
        "content": `frame-src 'self' ${grafanaUrl};` // 使用变量
      };
      return args;
    });
  }
}
